package br.usp.ime.dojo.client;
import java.util.ArrayList;
import java.util.List;

import com.google.gwt.user.client.rpc.AsyncCallback;
public interface DojoRoomServiceAsync {
	void getUserListFromRoom(String dojoRoomName, AsyncCallback<List<String> > callback);
	void getPilotQueueFromRoom(String dojoRoomName, AsyncCallback<List<String>> callback);
	void getPilot(String string,AsyncCallback<String> callback);
	void getCopilot(String string,AsyncCallback<String> callback);
	void exitDojoRoom(String userName, String dojoRoomName, AsyncCallback<Void> callback);
	void createDojoRoom(String name, String description, String creator, List<String> selectedLanguages, AsyncCallback<DojoRoomDTO> callback);
	void getAvailableLanguages(AsyncCallback<List<String>> callback);
	void join(DojoRoomDTO dojoRoom, UserDTO user, AsyncCallback<Void> callback);
	void getDojoRoomList(AsyncCallback< ArrayList<DojoRoomDTO> > callback);
	void toggle(DojoRoomDTO dojoRoom, UserDTO user, AsyncCallback<Void> callback);
	void verifyIfIsStarted(String roomName, AsyncCallback<Boolean> callback);
	void updateCodeInServer(String codeText, AsyncCallback<Void> callback);
	void updateCodeInClient(AsyncCallback<String> callback);
	void updateTestCodeInServer(String testCodeText, AsyncCallback<Void> callback);
	void updateTestCodeInClient(AsyncCallback<String> callback);
	void getSelectedLanguages(String roomName, AsyncCallback<List<String>> callback);
	void setSelectedLanguages(String name, String text,	AsyncCallback<List<String>> callback);
	void getInitialLanguages(String name, AsyncCallback<List<String>> callback);
	void setRoomDescription(String newDescription, String roomName, AsyncCallback<Void> callback);
	void getRoomDescription(String roomName, AsyncCallback<String> callback);
	void startSession(String name, AsyncCallback<Void> callback);
	void updateResultCodeInClient(AsyncCallback<String> asyncCallback);
	void updateResultCodeInServer(String resultCodeText, AsyncCallback<Void> asyncCallback);
}
